iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
0
AI & Data

從根本學習Reinforcement Learning系列 第 8

[Day08]時序差分學習

  • 分享至 

  • xImage
  •  

前言

Monte Carlo Method需要等到整個episode跑完才能更新,如果episode需要很多step才能結束的話會怎樣?如果你拿Monte Carlo去跑Taxi環境的話,會發現需要跑很久。這是因為我們State與Action太多,再加上隨機策略要到達Final State需要相當多step,進而造成更新很慢。

我們可以引進dynamic programming裡bootstrapping的概念,每個state只須依據下個state的值來更新,就不用等到episode跑完浪費時間了。

這種Monte Carlo裡的sample概念與dynamic programming裡的bootstrapping概念一起使用的算法就稱為時序差分學習 (Temporal difference learning),簡稱TD Learning。

時序差分學習 (Temporal difference learning)

我們先從Monte Carlo來看,Monte Carlo的更新方法很簡單,依照https://ithelp.ithome.com.tw/upload/images/20200907/20129922W7NUBYeObI.png來更新Value。

期望值可以用平均來計算,所以https://chart.googleapis.com/chart?cht=tx&chl=V(s)可以寫成
https://ithelp.ithome.com.tw/upload/images/20200907/201299224QsUUgdAze.png

這邊用https://chart.googleapis.com/chart?cht=tx&chl=n表示目前考慮幾次https://chart.googleapis.com/chart?cht=tx&chl=G_%7Bt%7Dhttps://chart.googleapis.com/chart?cht=tx&chl=V_%7Bn%7D(s)為考慮n個不同的https://chart.googleapis.com/chart?cht=tx&chl=G_%7Bt%7D之平均。

這就是前天結尾說的用incremental取代平均值,可以把https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B1%7D%7Bn%7D的部分可以換成任意值,稱為step-size或learning rate,通常以https://chart.googleapis.com/chart?cht=tx&chl=%5Calpha表示。

這種方法的好處是越後面的資訊不會被前面的資訊稀釋。舉例來說,假如環境是會變動的,如果我們step-size用原本的https://chart.googleapis.com/chart?cht=tx&chl=%5Cfrac%7B1%7D%7Bn%7D的話,環境變動後我們得到的https://chart.googleapis.com/chart?cht=tx&chl=G_%7Bt%7D對期望值的影響會隨著https://chart.googleapis.com/chart?cht=tx&chl=n變大而越來越小。如果將step-size設為常數,變動後的https://chart.googleapis.com/chart?cht=tx&chl=G_%7Bt%7D都會有固定比例來改變期望值https://chart.googleapis.com/chart?cht=tx&chl=V(s)的值。

所以Monte Carlo公式可以寫成這樣:
https://ithelp.ithome.com.tw/upload/images/20200907/20129922dT0lHv4me0.png

這邊就不特別把https://chart.googleapis.com/chart?cht=tx&chl=V_%7Bn%7D(s)https://chart.googleapis.com/chart?cht=tx&chl=n寫出來了,但實際上一樣是根據每個https://chart.googleapis.com/chart?cht=tx&chl=G_%7Bt%7D的值來增加

還記得https://chart.googleapis.com/chart?cht=tx&chl=G_%7Bt%7D的期望值嗎?
https://ithelp.ithome.com.tw/upload/images/20200907/20129922Cim8AalNO2.png

我們可以將https://chart.googleapis.com/chart?cht=tx&chl=G_%7Bt%7D以上面期望值的形式取代,形成期望值的期望值,這種更新方法就稱為Temporal difference learning。
https://ithelp.ithome.com.tw/upload/images/20200907/20129922stQZtuT7yR.png

可以證明TD Learning一樣可以收斂,且理論上收斂的速度比Monte Carlo還要快

公式中https://chart.googleapis.com/chart?cht=tx&chl=R_%7Bt%2B1%7D%2B%5Cgamma%20V(S_%7Bt%2B1%7D)-V(S_%7Bt%7D)稱為TD error,可以想成我們目前的估計值https://chart.googleapis.com/chart?cht=tx&chl=V(S_%7Bt%7D)與真實值https://chart.googleapis.com/chart?cht=tx&chl=R_%7Bt%2B1%7D%2B%5Cgamma%20V(S_%7Bt%7D)的差距。當差距越大,https://chart.googleapis.com/chart?cht=tx&chl=V(S_%7Bt%7D)的更新越多,當差距越小,https://chart.googleapis.com/chart?cht=tx&chl=V(S_%7Bt%7D)的更新就越少。

事實上,Monte Carlo Method就是一種多步更新的TD Learning,可以從Monte Carlo的error看到;
https://ithelp.ithome.com.tw/upload/images/20200907/20129922GWAk7sA8d3.png

Monte Carlo的error其實就是TD error的總和,也就是將TD Learning延伸到整個episode在算error來更新,更多細節會在之後的n-step TD learning提到。

TD Learning一樣可以視為一種GPI的形式
https://ithelp.ithome.com.tw/upload/images/20200907/20129922sd251CXgjh.png

其中,更新Value的部分就是用上面https://chart.googleapis.com/chart?cht=tx&chl=V(S_%7Bt%7D)的更新,而Policy一樣以https://chart.googleapis.com/chart?cht=tx&chl=%5Cepsilon-greedy的方式更新(因為要持續exploration),最後就能找到最佳解。

總結

了解TD Learning的更新方式後,明天就可以直接來實作兩種TD Learning的演算法:Sarsa與Q Learning,與他們的變形。學會這兩個演算法後,就可以解決在有限state裡大部分的Reinforcement Learning問題了!


上一篇
[Day07]On-Policy and Off-Policy
下一篇
[Day09]Sarsa & Q Learning (1)
系列文
從根本學習Reinforcement Learning12
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言